package com.sy.utils;

import org.apache.commons.collections.CollectionUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 *@功能：解析前端Html文本
 *
 *@方法（）:
 *
 *@方法（）：
 */
@Component
public class HtmlAnalysisUtils {


    /**
     *@功能：获取html中所有的图片名
     *
     *@入参:html文本
     *
     *@出参：名字的set集合
     */
    public Set<String> getImgName(String html){

        Set<String> htmlImgs = new HashSet<>();


        Document doc = Jsoup.parse(html);
        Elements elements=doc.getElementsByTag("img");


        for(Element element : elements) {
            String imgSrc=element.attr("src"); //获取src属性的值
            Integer index = imgSrc.lastIndexOf("/");
            String htmlImgsName = imgSrc.substring(index+1);

            //存入集合中等带比对
            htmlImgs.add(htmlImgsName);

        }

        return htmlImgs;
    }

    /**
     *@功能：获取htmlP标签的内容
     *
     *@入参:html文本,需要获取前几个P标签的内容
     *
     *@出参：P标签内容的集合
     */
    public List<String> getPtext(String html,Integer num){

        List<String> ptexts = new ArrayList<>();

        Document doc = Jsoup.parse(html);
        Elements elements=doc.getElementsByTag("p");

        if(CollectionUtils.isEmpty(elements)){
            ptexts.add(html);
            return ptexts;
        }

        for(Element element : elements) {
            String ptext=element.text(); //P标签文本
            ptexts.add(ptext);

        }

        //获取特定个数的内容
        if (ptexts.size() <= num){
            return ptexts;
        }else {

            return ptexts.subList(0,num);
        }

    }


}
